require "geo"

iso = {
  angle = math.atan2(1,1),
  scale = {
    x = 1,
    y = 0.5,
  }
}

function iso.toOrtho(x,y)
  local x = x / iso.scale.x
  local y = y / iso.scale.y
  x,y = geo.rotate(x,y,-iso.angle)
  return x,y
end

function iso.toIso(x,y)
  local x = x * iso.scale.x
  local y = y * iso.scale.y
  return x,y
end

function iso.applyMatrix()
  grx.scale(iso.scale.x, iso.scale.y)
  grx.rotate(iso.angle)
end

function iso.undoMatrix()
  grx.rotate(-iso.angle)
  grx.scale(1 / iso.scale.x, 1 / iso.scale.y)
end
